home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PsL Monthly 1993 December
/
PSL Monthly Shareware CD-ROM (December 1993).iso
/
prgmming
/
dos
/
basic
/
pbtool.exe
/
TOUCHIT.BAS
< prev
next >
Wrap
BASIC Source File
|
1992-04-03
|
4KB
|
148 lines
'----------------------------------------------------------
' PROGRAM: TOUCHIT.BAS PROGRAMMER: A. KELLETT
' DATE-WRITTEN: 04/03/92
' USING POWER BASIC V2.10A
'
' THIS PROGRAM ALTERS THE TIME/DATE STAMP OF A FILE TO
' THE CURRENT SYSTEM TIME/DATE. MUST BE COMPILED WITH
' POWERBASIC V2.10 OR GREATER
'
' VERSION: 0.40 LAST UPDATED: 00/00/00
'----------------------------------------------------------
VERSION$ = "0.40"
FILENAME1$ = COMMAND$
MAINFLAG% = 0
WHILE MAINFLAG% = 0
IF FILENAME1$ = "" THEN
CLS
LOCATE 1,12:PRINT USING_
" TOUCHIT V \ \ - SET TIME/DATE STAMP TO CURRENT TIME/DATE";VERSION$
LOCATE 5,12:INPUT "FILE NAME: ";FILENAME1$
IF FILENAME1$ = "" THEN
LOCATE 20,1:PRINT "PROGRAM ENDING..."
END
END IF
END IF
GOSUB FILEEXISTS
GOSUB GETATTRIB
LOCATE 15,1:PRINT "DO YOU WANT TO CHANGE THE TIME/DATE STAMP [Y/N]"
DO
KEYIN$ = UCASE$(INKEY$)
LOOP UNTIL INSTR(" YN", KEYIN$) > 1
IF KEYIN$ = "Y" THEN
GOSUB UPDATEFILE
END IF
LOCATE 18,12:PRINT "UPDATE ANOTHER FILE? [Y/N] <Enter> = No ";
KEYIN$ = ""
DO
KEYIN$ = UCASE$(INKEY$)
LOOP UNTIL INSTR(" YN", KEYIN$) > 1
IF KEYIN$ <> "Y" THEN
MAINFLAG% = 1
ELSE
FILENAME1$ = ""
END IF
WEND
LOCATE 23,1:PRINT "THANKS FOR USING TOUCHIT - ANDY K!"
END
'
' SET UP ATTRIBUTE FLAGS FROM FILE ATTRIBUTES
'----------------------------------------------------------
GETATTRIB:
ATTRIBUTE% = ATTRIB(FILENAME1$)
X% = ATTRIBUTE%
IF ATTRIBUTE% => 32 THEN
ARCHIVE% = 1
ATTRIBUTE% = ATTRIBUTE% - 32
ELSE
ARCHIVE% = 0
END IF
IF ATTRIBUTE% => 16 THEN
SUBDIR% = 1
ATTRIBUTE% = ATTRIBUTE% - 16
END IF
IF ATTRIBUTE% => 8 THEN
VLABEL% = 1
ATTRIBUTE% = ATTRIBUTE% - 8
END IF
IF ATTRIBUTE% => 4 THEN
SYSTEMBIT% = 1
ATTRIBUTE% = ATTRIBUTE% - 4
ELSE
SYSTEMBIT% = 0
END IF
IF ATTRIBUTE% => 2 THEN
HIDDEN% = 1
ATTRIBUTE% = ATTRIBUTE% - 2
ELSE
HIDDEN% = 0
END IF
IF ATTRIBUTE% => 1 THEN
READONLY% = 1
ELSE
READONLY% = 0
END IF
RETURN
'
' DOES FILE EXIST, IF NOT EXIT THE PROGRAM
'----------------------------------------------------------
FILEEXISTS:
'*** CHECK VALIDITY OF INPUT FILE NAME ***
OPEN FILENAME1$ FOR BINARY AS #1
IF LOF(1) < 1 THEN
LOCATE STARTROW% + 10, STARTCOLUMN% + 7
PRINT "THE FILE DOES NOT EXISTS, PROGRAM ABORTING.";
CLOSE #1
KILL FILENAME1$
DELAY 2.5
LOCATE 22,1
END
END IF
FILE1EOF&& = LOF(1)
CLOSE #1
RETURN
'
' UPDATE TIME/DATE STAMP, SET ATTRIBUTE BACK TO ORIGINAL STATE
'----------------------------------------------------------
UPDATEFILE:
'** IF IT'S READ-ONLY, TEMPORARILY SET IT TO READ/WRITE ACCESS
IF READONLY% = 1 THEN
ATTRIBUTE% = ATTRIBUTE% - 1
ATTRIB FILENAME1$, ATTRIBUTE%
END IF
'** THE TRICK IS TO OPEN THE FILE, READ 1 BYTE, WRITE THAT BYTE BACK TO
'** THE SAME POSITION IN THE FILE, AND CLOSE. DOS UPDATES THE TIME & DATE.
OPEN FILENAME1$ FOR BINARY AS #1
SEEK 1, 1 :REM** POSITION TO BYTE 1 OF FILE 1
GET$ 1, 1, BUFFER$ :REM** READ 1 BYTE INTO BUFFER$
SEEK 1, 1 :REM** POSITION TO BYTE 1 OF FILE 1 AGAIN
PUT$ 1, BUFFER$ :REM** WRITE 1 BYTE FROM BUFFER$
CLOSE #1
'*** SET ATTRIBUTE BACK TO ORIGINAL ***
ATTRIBUTE% = 0
IF READONLY% = 1 THEN
ATTRIBUTE% = ATTRIBUTE% + 1
END IF
IF ARCHIVE% = 1 THEN
ATTRIBUTE% = ATTRIBUTE% + 32
END IF
IF SYSTEMBIT% = 1 THEN
ATTRIBUTE% = ATTRIBUTE% + 4
END IF
IF HIDDEN% = 1 THEN
ATTRIBUTE% = ATTRIBUTE% + 2
END IF
ATTRIB FILENAME1$,ATTRIBUTE%
RETURN